use the visual scroll steps.
authorHavoc Pennington <hp@redhat.com>
Mon, 19 Feb 2001 20:06:37 +0000 (20:06 +0000)
committerHavoc Pennington <hp@src.gnome.org>
Mon, 19 Feb 2001 20:06:37 +0000 (20:06 +0000)
2001-02-16  Havoc Pennington  <hp@redhat.com>

* gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
scroll steps.

* gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
steps, and add Ctrl-arrow shortcuts for paging visually as with
HScale, since Page Up and Page Down move logically.

* gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions

* gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
steps
(gtk_range_scroll): handle the visual steps

* gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
scroll steps

* gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
steps, not the logical ones.

* gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
(scroll_vertical): handle up/down steps

15 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkclist.c
gtk/gtkenums.h
gtk/gtkhscale.c
gtk/gtklist.c
gtk/gtkrange.c
gtk/gtkrange.h
gtk/gtkvscale.c
gtk/gtkvscrollbar.c

index d4d0e89ed10b087838b9eb77966988fdb55eec40..0d52235420689494cfa3c9ba25891657d67c3b6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2001-02-16  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
+       scroll steps.
+
+       * gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
+       steps, and add Ctrl-arrow shortcuts for paging visually as with
+       HScale, since Page Up and Page Down move logically.
+
+       * gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
+       GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions
+       
+       * gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
+       steps
+       (gtk_range_scroll): handle the visual steps
+
+       * gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
+       scroll steps
+
+       * gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
+       steps, not the logical ones.
+
+       * gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
+       (scroll_vertical): handle up/down steps
+
 2001-02-19 Alexander Larsson  <alexl@redhat.com>
 
        * gdk/linux-fb/gdkimage-fb.c (gdk_image_new_bitmap):
@@ -82,6 +107,7 @@ Sat Feb 17 06:47:27 2001  Tim Janik  <timj@gtk.org>
        * gtk/gtkliststore.c (gtk_list_store_set_valist): 
        fix G_VALUE_COLLECT() and G_VALUE_LCOPY() calls.
        
+>>>>>>> 1.1728
 Fri Feb 16 17:49:59 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreestore.[hc], gtk/gtkliststore.[ch]: removed
index d4d0e89ed10b087838b9eb77966988fdb55eec40..0d52235420689494cfa3c9ba25891657d67c3b6b 100644 (file)
@@ -1,3 +1,28 @@
+2001-02-16  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
+       scroll steps.
+
+       * gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
+       steps, and add Ctrl-arrow shortcuts for paging visually as with
+       HScale, since Page Up and Page Down move logically.
+
+       * gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
+       GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions
+       
+       * gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
+       steps
+       (gtk_range_scroll): handle the visual steps
+
+       * gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
+       scroll steps
+
+       * gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
+       steps, not the logical ones.
+
+       * gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
+       (scroll_vertical): handle up/down steps
+
 2001-02-19 Alexander Larsson  <alexl@redhat.com>
 
        * gdk/linux-fb/gdkimage-fb.c (gdk_image_new_bitmap):
@@ -82,6 +107,7 @@ Sat Feb 17 06:47:27 2001  Tim Janik  <timj@gtk.org>
        * gtk/gtkliststore.c (gtk_list_store_set_valist): 
        fix G_VALUE_COLLECT() and G_VALUE_LCOPY() calls.
        
+>>>>>>> 1.1728
 Fri Feb 16 17:49:59 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreestore.[hc], gtk/gtkliststore.[ch]: removed
index d4d0e89ed10b087838b9eb77966988fdb55eec40..0d52235420689494cfa3c9ba25891657d67c3b6b 100644 (file)
@@ -1,3 +1,28 @@
+2001-02-16  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
+       scroll steps.
+
+       * gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
+       steps, and add Ctrl-arrow shortcuts for paging visually as with
+       HScale, since Page Up and Page Down move logically.
+
+       * gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
+       GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions
+       
+       * gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
+       steps
+       (gtk_range_scroll): handle the visual steps
+
+       * gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
+       scroll steps
+
+       * gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
+       steps, not the logical ones.
+
+       * gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
+       (scroll_vertical): handle up/down steps
+
 2001-02-19 Alexander Larsson  <alexl@redhat.com>
 
        * gdk/linux-fb/gdkimage-fb.c (gdk_image_new_bitmap):
@@ -82,6 +107,7 @@ Sat Feb 17 06:47:27 2001  Tim Janik  <timj@gtk.org>
        * gtk/gtkliststore.c (gtk_list_store_set_valist): 
        fix G_VALUE_COLLECT() and G_VALUE_LCOPY() calls.
        
+>>>>>>> 1.1728
 Fri Feb 16 17:49:59 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreestore.[hc], gtk/gtkliststore.[ch]: removed
index d4d0e89ed10b087838b9eb77966988fdb55eec40..0d52235420689494cfa3c9ba25891657d67c3b6b 100644 (file)
@@ -1,3 +1,28 @@
+2001-02-16  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
+       scroll steps.
+
+       * gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
+       steps, and add Ctrl-arrow shortcuts for paging visually as with
+       HScale, since Page Up and Page Down move logically.
+
+       * gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
+       GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions
+       
+       * gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
+       steps
+       (gtk_range_scroll): handle the visual steps
+
+       * gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
+       scroll steps
+
+       * gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
+       steps, not the logical ones.
+
+       * gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
+       (scroll_vertical): handle up/down steps
+
 2001-02-19 Alexander Larsson  <alexl@redhat.com>
 
        * gdk/linux-fb/gdkimage-fb.c (gdk_image_new_bitmap):
@@ -82,6 +107,7 @@ Sat Feb 17 06:47:27 2001  Tim Janik  <timj@gtk.org>
        * gtk/gtkliststore.c (gtk_list_store_set_valist): 
        fix G_VALUE_COLLECT() and G_VALUE_LCOPY() calls.
        
+>>>>>>> 1.1728
 Fri Feb 16 17:49:59 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreestore.[hc], gtk/gtkliststore.[ch]: removed
index d4d0e89ed10b087838b9eb77966988fdb55eec40..0d52235420689494cfa3c9ba25891657d67c3b6b 100644 (file)
@@ -1,3 +1,28 @@
+2001-02-16  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
+       scroll steps.
+
+       * gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
+       steps, and add Ctrl-arrow shortcuts for paging visually as with
+       HScale, since Page Up and Page Down move logically.
+
+       * gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
+       GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions
+       
+       * gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
+       steps
+       (gtk_range_scroll): handle the visual steps
+
+       * gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
+       scroll steps
+
+       * gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
+       steps, not the logical ones.
+
+       * gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
+       (scroll_vertical): handle up/down steps
+
 2001-02-19 Alexander Larsson  <alexl@redhat.com>
 
        * gdk/linux-fb/gdkimage-fb.c (gdk_image_new_bitmap):
@@ -82,6 +107,7 @@ Sat Feb 17 06:47:27 2001  Tim Janik  <timj@gtk.org>
        * gtk/gtkliststore.c (gtk_list_store_set_valist): 
        fix G_VALUE_COLLECT() and G_VALUE_LCOPY() calls.
        
+>>>>>>> 1.1728
 Fri Feb 16 17:49:59 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreestore.[hc], gtk/gtkliststore.[ch]: removed
index d4d0e89ed10b087838b9eb77966988fdb55eec40..0d52235420689494cfa3c9ba25891657d67c3b6b 100644 (file)
@@ -1,3 +1,28 @@
+2001-02-16  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
+       scroll steps.
+
+       * gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
+       steps, and add Ctrl-arrow shortcuts for paging visually as with
+       HScale, since Page Up and Page Down move logically.
+
+       * gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
+       GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions
+       
+       * gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
+       steps
+       (gtk_range_scroll): handle the visual steps
+
+       * gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
+       scroll steps
+
+       * gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
+       steps, not the logical ones.
+
+       * gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
+       (scroll_vertical): handle up/down steps
+
 2001-02-19 Alexander Larsson  <alexl@redhat.com>
 
        * gdk/linux-fb/gdkimage-fb.c (gdk_image_new_bitmap):
@@ -82,6 +107,7 @@ Sat Feb 17 06:47:27 2001  Tim Janik  <timj@gtk.org>
        * gtk/gtkliststore.c (gtk_list_store_set_valist): 
        fix G_VALUE_COLLECT() and G_VALUE_LCOPY() calls.
        
+>>>>>>> 1.1728
 Fri Feb 16 17:49:59 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreestore.[hc], gtk/gtkliststore.[ch]: removed
index d4d0e89ed10b087838b9eb77966988fdb55eec40..0d52235420689494cfa3c9ba25891657d67c3b6b 100644 (file)
@@ -1,3 +1,28 @@
+2001-02-16  Havoc Pennington  <hp@redhat.com>
+
+       * gtk/gtkvscrollbar.c (gtk_vscrollbar_trough_keys): use the visual
+       scroll steps.
+
+       * gtk/gtkvscale.c (gtk_vscale_trough_keys): use the visual scroll
+       steps, and add Ctrl-arrow shortcuts for paging visually as with
+       HScale, since Page Up and Page Down move logically.
+
+       * gtk/gtkenums.h (GtkScrollType): add GTK_SCROLL_STEP_UP,
+       GTK_SCROLL_STEP_DOWN, etc. for visual scroll directions
+       
+       * gtk/gtkrange.c (gtk_range_key_press): handle the visual scroll
+       steps
+       (gtk_range_scroll): handle the visual steps
+
+       * gtk/gtklist.c (gtk_list_scroll_horizontal): handle the up/down
+       scroll steps
+
+       * gtk/gtkhscale.c (gtk_hscale_trough_keys): use the visual scroll
+       steps, not the logical ones.
+
+       * gtk/gtkclist.c (move_focus_row): handle the up/down scroll steps
+       (scroll_vertical): handle up/down steps
+
 2001-02-19 Alexander Larsson  <alexl@redhat.com>
 
        * gdk/linux-fb/gdkimage-fb.c (gdk_image_new_bitmap):
@@ -82,6 +107,7 @@ Sat Feb 17 06:47:27 2001  Tim Janik  <timj@gtk.org>
        * gtk/gtkliststore.c (gtk_list_store_set_valist): 
        fix G_VALUE_COLLECT() and G_VALUE_LCOPY() calls.
        
+>>>>>>> 1.1728
 Fri Feb 16 17:49:59 2001  Jonathan Blandford  <jrb@redhat.com>
 
        * gtk/gtktreestore.[hc], gtk/gtkliststore.[ch]: removed
index 0a1771f9adbebabdca673e6d09035b525da3ea61..f0ba6b76e5b960f6f2177d1e8412ce13bcdb0ec7 100644 (file)
@@ -6861,6 +6861,7 @@ move_focus_row (GtkCList      *clist,
 
   switch (scroll_type)
     {
+    case GTK_SCROLL_STEP_UP:
     case GTK_SCROLL_STEP_BACKWARD:
       if (clist->focus_row <= 0)
        return;
@@ -6868,6 +6869,8 @@ move_focus_row (GtkCList      *clist,
       clist->focus_row--;
       gtk_clist_draw_focus (widget);
       break;
+
+    case GTK_SCROLL_STEP_DOWN:
     case GTK_SCROLL_STEP_FORWARD:
       if (clist->focus_row >= clist->rows - 1)
        return;
@@ -6875,6 +6878,7 @@ move_focus_row (GtkCList      *clist,
       clist->focus_row++;
       gtk_clist_draw_focus (widget);
       break;
+    case GTK_SCROLL_PAGE_UP:
     case GTK_SCROLL_PAGE_BACKWARD:
       if (clist->focus_row <= 0)
        return;
@@ -6885,6 +6889,7 @@ move_focus_row (GtkCList      *clist,
                              (2 * (clist->row_height + CELL_SPACING)));
       gtk_clist_draw_focus (widget);
       break;
+    case GTK_SCROLL_PAGE_DOWN:
     case GTK_SCROLL_PAGE_FORWARD:
       if (clist->focus_row >= clist->rows - 1)
        return;
@@ -7029,10 +7034,14 @@ scroll_vertical (GtkCList      *clist,
                             clist->focus_row, -1, NULL);
          switch (scroll_type)
            {
+            case GTK_SCROLL_PAGE_UP:
+            case GTK_SCROLL_STEP_UP:
            case GTK_SCROLL_STEP_BACKWARD:
            case GTK_SCROLL_PAGE_BACKWARD:
              gtk_clist_moveto (clist, clist->focus_row, -1, 0, 0);
              break;
+            case GTK_SCROLL_PAGE_DOWN:
+            case GTK_SCROLL_STEP_DOWN:
            case GTK_SCROLL_STEP_FORWARD:
            case GTK_SCROLL_PAGE_FORWARD:
              gtk_clist_moveto (clist, clist->focus_row, -1, 1, 0);
index d28383da0a92e0c2d282804b80b137e027e7c401..bb75cd24eb689632cb5b041826618c5adac56541 100644 (file)
@@ -254,7 +254,15 @@ typedef enum
   GTK_SCROLL_STEP_FORWARD,
   GTK_SCROLL_PAGE_BACKWARD,
   GTK_SCROLL_PAGE_FORWARD,
-  GTK_SCROLL_JUMP
+  GTK_SCROLL_JUMP,
+  GTK_SCROLL_STEP_UP,
+  GTK_SCROLL_STEP_DOWN,
+  GTK_SCROLL_PAGE_UP,
+  GTK_SCROLL_PAGE_DOWN,
+  GTK_SCROLL_STEP_LEFT,
+  GTK_SCROLL_STEP_RIGHT,
+  GTK_SCROLL_PAGE_LEFT,
+  GTK_SCROLL_PAGE_RIGHT
 } GtkScrollType;
 
 /* list selection modes */
index 8fe09ef70c9e6aa28d7022fb2cc5fa66ae62462e..e1fae4f3bd708f32cf58cb093a7238a99d90e724 100644 (file)
@@ -552,16 +552,16 @@ gtk_hscale_trough_keys (GtkRange *range,
     case GDK_Left:
       return_val = TRUE;
       if (key->state & GDK_CONTROL_MASK)
-        *scroll = GTK_SCROLL_PAGE_BACKWARD;
+        *scroll = GTK_SCROLL_PAGE_LEFT;
       else
-        *scroll = GTK_SCROLL_STEP_BACKWARD;
+        *scroll = GTK_SCROLL_STEP_LEFT;
       break;
     case GDK_Right:
       return_val = TRUE;
       if (key->state & GDK_CONTROL_MASK)
-        *scroll = GTK_SCROLL_PAGE_FORWARD;
+        *scroll = GTK_SCROLL_PAGE_RIGHT;
       else
-        *scroll = GTK_SCROLL_STEP_FORWARD;
+        *scroll = GTK_SCROLL_STEP_RIGHT;
       break;
     case GDK_Home:
       return_val = TRUE;
index b8d24f3e7d94a0a6fa95c5ff45c812c9a7e402b5..7ab5231ef3ce288633cf7c76fcfce398cd3612c2 100644 (file)
@@ -2217,18 +2217,22 @@ gtk_list_scroll_horizontal (GtkList       *list,
 
   switch (scroll_type)
     {
+    case GTK_SCROLL_STEP_UP:
     case GTK_SCROLL_STEP_BACKWARD:
       adj->value = CLAMP (adj->value - adj->step_increment, adj->lower,
                          adj->upper - adj->page_size);
       break;
+    case GTK_SCROLL_STEP_DOWN:
     case GTK_SCROLL_STEP_FORWARD:
       adj->value = CLAMP (adj->value + adj->step_increment, adj->lower,
                          adj->upper - adj->page_size);
       break;
+    case GTK_SCROLL_PAGE_UP:
     case GTK_SCROLL_PAGE_BACKWARD:
       adj->value = CLAMP (adj->value - adj->page_increment, adj->lower,
                          adj->upper - adj->page_size);
       break;
+    case GTK_SCROLL_PAGE_DOWN:
     case GTK_SCROLL_PAGE_FORWARD:
       adj->value = CLAMP (adj->value + adj->page_increment, adj->lower,
                          adj->upper - adj->page_size);
index 66c3bbf9671f1f51ab24bd0f3e4d46cfd5d48c13..0f22f1e7420556bf9243bc1af03b90f7fc45c034 100644 (file)
@@ -1116,7 +1116,7 @@ gtk_range_key_press (GtkWidget   *widget,
 
   range = GTK_RANGE (widget);
   return_val = FALSE;
-
+  
   if (RANGE_CLASS (range)->trough_keys)
     return_val = (* RANGE_CLASS (range)->trough_keys) (range, event, &scroll, &pos);
 
@@ -1125,15 +1125,45 @@ gtk_range_key_press (GtkWidget   *widget,
       if (scroll != GTK_SCROLL_NONE)
        {
          range->scroll_type = scroll;
+
          gtk_range_scroll (range, -1);
          if (range->old_value != range->adjustment->value)
            {
              gtk_signal_emit_by_name (GTK_OBJECT (range->adjustment), "value_changed");
              switch (range->scroll_type)
                {
+                case GTK_SCROLL_STEP_LEFT:
+                  if (should_invert (range, TRUE))
+                    gtk_range_draw_step_forw (range);
+                  else
+                    gtk_range_draw_step_back (range);
+                  break;
+                    
+                case GTK_SCROLL_STEP_UP:
+                  if (should_invert (range, FALSE))
+                    gtk_range_draw_step_forw (range);
+                  else
+                    gtk_range_draw_step_back (range);
+                  break;
+
+                case GTK_SCROLL_STEP_RIGHT:
+                  if (should_invert (range, TRUE))
+                    gtk_range_draw_step_back (range);
+                  else
+                    gtk_range_draw_step_forw (range);
+                  break;
+                    
+                case GTK_SCROLL_STEP_DOWN:
+                  if (should_invert (range, FALSE))
+                    gtk_range_draw_step_back (range);
+                  else
+                    gtk_range_draw_step_forw (range);
+                  break;
+                  
                case GTK_SCROLL_STEP_BACKWARD:
                  gtk_range_draw_step_back (range);
                  break;
+                  
                case GTK_SCROLL_STEP_FORWARD:
                  gtk_range_draw_step_forw (range);
                  break;
@@ -1374,13 +1404,79 @@ gtk_range_scroll (GtkRange *range,
 {
   gfloat new_value;
   gint return_val;
-
+  GtkScrollType scroll_type;
+  
   g_return_val_if_fail (GTK_IS_RANGE (range), FALSE);
 
   new_value = range->adjustment->value;
   return_val = TRUE;
 
-  switch (range->scroll_type)
+  /* Translate visual to logical */
+
+  scroll_type = range->scroll_type;
+  switch (scroll_type)
+    {
+    case GTK_SCROLL_STEP_UP:
+      if (should_invert (range, FALSE))
+        scroll_type = GTK_SCROLL_STEP_FORWARD;
+      else
+        scroll_type = GTK_SCROLL_STEP_BACKWARD;
+      break;
+
+    case GTK_SCROLL_STEP_DOWN:
+      if (should_invert (range, FALSE))
+        scroll_type = GTK_SCROLL_STEP_BACKWARD;
+      else
+        scroll_type = GTK_SCROLL_STEP_FORWARD;
+      break;
+
+    case GTK_SCROLL_PAGE_UP:
+      if (should_invert (range, FALSE))
+        scroll_type = GTK_SCROLL_PAGE_FORWARD;
+      else
+        scroll_type = GTK_SCROLL_PAGE_BACKWARD;
+      break;
+
+    case GTK_SCROLL_PAGE_DOWN:
+      if (should_invert (range, FALSE))
+        scroll_type = GTK_SCROLL_PAGE_BACKWARD;
+      else
+        scroll_type = GTK_SCROLL_PAGE_FORWARD;
+      break;
+
+    case GTK_SCROLL_STEP_LEFT:
+      if (should_invert (range, TRUE))
+        scroll_type = GTK_SCROLL_STEP_FORWARD;
+      else
+        scroll_type = GTK_SCROLL_STEP_BACKWARD;
+      break;
+
+    case GTK_SCROLL_STEP_RIGHT:
+      if (should_invert (range, TRUE))
+        scroll_type = GTK_SCROLL_STEP_BACKWARD;
+      else
+        scroll_type = GTK_SCROLL_STEP_FORWARD;
+      break;
+
+    case GTK_SCROLL_PAGE_LEFT:
+      if (should_invert (range, TRUE))
+        scroll_type = GTK_SCROLL_PAGE_FORWARD;
+      else
+        scroll_type = GTK_SCROLL_PAGE_BACKWARD;
+      break;
+
+    case GTK_SCROLL_PAGE_RIGHT:
+      if (should_invert (range, TRUE))
+        scroll_type = GTK_SCROLL_PAGE_BACKWARD;
+      else
+        scroll_type = GTK_SCROLL_PAGE_FORWARD;
+      break;
+
+    default:
+      break;
+    }
+  
+  switch (scroll_type)
     {
     case GTK_SCROLL_NONE:
       break;
@@ -1433,8 +1529,20 @@ gtk_range_scroll (GtkRange *range,
          range->timer = 0;
        }
       break;
-    }
 
+    case GTK_SCROLL_STEP_UP:
+    case GTK_SCROLL_STEP_DOWN:
+    case GTK_SCROLL_PAGE_UP:
+    case GTK_SCROLL_PAGE_DOWN:
+    case GTK_SCROLL_STEP_LEFT:
+    case GTK_SCROLL_STEP_RIGHT:
+    case GTK_SCROLL_PAGE_LEFT:
+    case GTK_SCROLL_PAGE_RIGHT:
+      g_assert_not_reached ();
+      break;
+
+    }
+  
   if (new_value != range->adjustment->value)
     {
       range->adjustment->value = new_value;
index 5b48aeaedd4b36501e16d896f5b9b0eeec1140e2..9c3089680b9e166338e77dfbc205350d318166b9 100644 (file)
@@ -64,7 +64,7 @@ struct _GtkRange
   guint8 button;
   gint8 digits;
   guint policy : 2;
-  guint scroll_type : 3;
+  guint scroll_type : 5;
   guint in_child : 3;
   guint click_child : 3;
   guint need_timer : 1;
index b41798cdb02b5bc370e59b8aa27b677c354fbe78..b1ee7a2d5b59b69d6e2e33adfc3b0487f820cecf 100644 (file)
@@ -554,11 +554,17 @@ gtk_vscale_trough_keys (GtkRange *range,
     {
     case GDK_Up:
       return_val = TRUE;
-      *scroll = GTK_SCROLL_STEP_BACKWARD;
+      if (key->state & GDK_CONTROL_MASK)
+        *scroll = GTK_SCROLL_PAGE_UP;
+      else
+        *scroll = GTK_SCROLL_STEP_UP;
       break;
     case GDK_Down:
       return_val = TRUE;
-      *scroll = GTK_SCROLL_STEP_FORWARD;
+      if (key->state & GDK_CONTROL_MASK)
+        *scroll = GTK_SCROLL_PAGE_DOWN;
+      else
+        *scroll = GTK_SCROLL_STEP_DOWN;
       break;
     case GDK_Page_Up:
       return_val = TRUE;
index 43c939f6cc5dc34eeff9c5727b8812c40f16d129..dadaff7cc72c8a8b3d60438c13ad7f2840c1e4b0 100644 (file)
@@ -436,11 +436,11 @@ gtk_vscrollbar_trough_keys(GtkRange *range,
     {
     case GDK_Up:
       return_val = TRUE;
-      *scroll = GTK_SCROLL_STEP_BACKWARD;
+      *scroll = GTK_SCROLL_STEP_UP;
       break;
     case GDK_Down:
       return_val = TRUE;
-      *scroll = GTK_SCROLL_STEP_FORWARD;
+      *scroll = GTK_SCROLL_STEP_DOWN;
       break;
     case GDK_Page_Up:
       return_val = TRUE;